package com.bjsxt.mappers;

import com.bjsxt.domain.User;
import com.bjsxt.dto.UserDto;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * description:
 * OpenFeign 远程调用 User <--> UserDto 的映射转换对象
 *
 * @author ALIENWARE
 * @version v1.0.0
 * @create 12/29/2023
 **/
@Mapper(componentModel = "spring")
public interface UserDtoMapper {

    /**
     * 获取该对象的实例，这一步与类加载器有关，有兴趣学学 JVM
     */
    // 获取该对象的实例
    UserDtoMapper INSTANCE = Mappers.getMapper(UserDtoMapper.class);

    /**
     * 将 user 对象转换为 userDto 对象
     *
     * @param source user 对象
     * @return 转换为的 userDto 对象
     */
    UserDto convert2Dto(User source);

    /**
     * 将 userDto 对象转换为 user 对象
     *
     * @param source userDto 对象
     * @return 转换为的 user 对象
     */
    User convert2Entity(UserDto source);

    /**
     * 将 user 集合对象转换为 userDto 集合对象
     *
     * @param source user 集合对象
     * @return 转换为的 userDto 集合对象
     */
    List<UserDto> convert2Dto(List<User> source);

    /**
     * 将 userDto 集合对象转换为 user 集合对象
     *
     * @param source userDto 集合对象
     * @return 转换为的 user 集合对象
     */
    List<User> convert2Entity(List<UserDto> source);
}
